﻿// ADD.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <stdio.h>
#include <corecrt_math.h>

void DDALine(int x1, int y1, int x2, int y2);

void SetPixel(int x, int y);

int main()
{
	DDALine(1, 2, 10, 6);
}
void DDALine(int x1, int y1, int x2, int y2) {
	double dx, dy, e, x, y;
	dx = x2 - x1;
	dy = y2 - y1;
	e = (fabs(dx) > fabs(dy) ? fabs(dx) : fabs(dy));
	dx /= e;
	dy /= e;
	x = x1;
	y = y1;
	for (int i = 0; i <= e; i++) {
		SetPixel((int)(x + 0.5), (int)(y + 0.5));
		x += dx;
		y += dy;
	}
}
void MidpointLine(int x0, int y0, int x1, int y1) {
	int a, b, delta1, delta2, d, x, y;
	a = y0 - y1;
	b = x1 - x0;
	d = 2 * a + b;//设定初值，乘了个2
	delta1 = 2 * a;//方便整数运算 
	delta2 = 2 * (a + b);
	x = x0;
	y = y0;
	SetPixel(x, y);
	while (x < x1) {
		if (d < 0) {//d<0时,选择右上方的点，增量是a+b，这里乘2 
			x++;
			y++;
			d += delta2;
		}
		else {//右侧点，增量2a 
			x++;
			d += delta1;
		}
		SetPixel(x, y); //一直到最右侧的端点再结束描像素 
	}
}
void SetPixel(int x, int y) {
	printf("x=%d, ", x);
	printf("y=%d\n", y);
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件